public class java20231221 {
    public static void main(String[] args) {
       /* int a = 10;
        long b = 100L;
        b = a;//可以通过编译
        a = b;//编译失败*/

        System.out.println(1024);//整型默认情况下是int
        System.out.println(3.14);//浮点型默认情况下是double

        int a = 10;
        long b = 100L;
        b = a;//a和b都是整型，a的范围小，b的范围大，当将a赋值给b时，编译器会自动将a提升成为long类型，然后赋值
        a = b;//编译报错，因为long的范围比int更加大，会造成数据丢失，不安全

        float f = 3.14F;
        double d = 5.12;

        d = f;//编译器会将f转换为double,然后进行赋值
        f = d;//double表示数据范围大，直接将float交给double会有数据丢失，不安全

        byte b1 = 100;//编译通过，100没有超过byte的范围，编译器隐式将100转换为byte
        byte b2 = 257;//编译失败，257超过了byte的数据范围，会有数据丢失
    }
}
